public class Date {
    //成员变量
    public int year;
    public int month;
    public int day;

    //构造方法
    //没有返回值类型，方法名必须与类名一致
    //new 实例化对象时就会 调用构造方法
    //在整个对象的生命周期内只调用一次
    public Date() {
        this(2000,1,1);
        //this可以调用其他的构造方法，必须放在第一条语句

        this.show();
        //也可以调用当前对象的成员方法 this.show
        System.out.println("调用了不带参数的构造方法");
    }

    //如果没有写任何构造方法，java会默认提供给你一个空的，不会报错
    //如果有构造方法，就会调用你写的，不会给你提供了
    //那么把不带参数的构造方法删了，你创建对象只会调用有三个参数的构造方法，如果你没给参数，就会报错

    //构造方法的重载
    public Date(int year,int month,int day) {
        //this调用当前对象的成员变量
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("调用了3个参数的构造方法");
    }

    //成员方法
    //形参与成员变量名相同时，必须要用this关键字
    public void setDate(int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void show() {
        System.out.println(this.year+"年"+this.month+"月"+this.day+"日");
    }

    public static void main(String[] args) {
        Date data1 = new Date();
        data1.show();
        data1.setDate(2022,11,7);
        data1.show();

        System.out.println("===============");

        Date data2 = new Date();
        data2.show();
        data2.setDate(2022,11,8);
        data2.show();

        System.out.println("===============");

        Date data3 = new Date(2022,11,9);
        data3.show();
    }
}
